{ "cells": [ { "cell_type": "markdown", "id": "c85f17de", "metadata": {}, "source": [ "# Settlement Point Prices" ] }, { "cell_type": "code", "execution_count": 1, "id": "d0ad47ce", "metadata": {}, "outputs": [], "source": [ "import gridstatus\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "55d3f5c9", "metadata": {}, "outputs": [], "source": [ "iso = gridstatus.Ercot()" ] }, { "cell_type": "markdown", "id": "61f2744c", "metadata": {}, "source": [ "## The get_spp Method" ] }, { "cell_type": "markdown", "id": "89f971fb", "metadata": {}, "source": [ "The main method is `get_spp`, which takes the following arguments:" ] }, { "cell_type": "markdown", "id": "4526f973", "metadata": {}, "source": [ "### Date\n", "\n", "Date can be `\"today\"`, `\"latest\"`, or a `pandas.Timestamp`.\n", "\n", "Day-ahead Market (DAM) data is released daily, so `date=\"latest\"` is not supported for DAM." ] }, { "cell_type": "markdown", "id": "5f2f68dc", "metadata": {}, "source": [ "### Market\n", "\n", "ERCOT has 2 available markets:" ] }, { "cell_type": "code", "execution_count": 3, "id": "0df4d382", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iso.markets" ] }, { "cell_type": "markdown", "id": "cef4d3a5", "metadata": {}, "source": [ "### Location Type\n", "\n", "ERCOT has 3 available location types, with `\"ZONE\"` as default." ] }, { "cell_type": "code", "execution_count": 4, "id": "7186afb4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['HUB', 'NODE', 'ZONE']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iso.location_types" ] }, { "cell_type": "markdown", "id": "1fc90fc1", "metadata": {}, "source": [ "## Example: Fetch latest real-time market (RTM) by zone" ] }, { "cell_type": "code", "execution_count": 5, "id": "83b67ed8", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LocationTimeMarketLocation TypeSPP
0DC_E2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone22.84
1DC_L2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone22.50
2DC_N2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone0.24
3DC_R2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone20.80
4DC_S2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone5.67
5LZ_AEN2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone19.61
6LZ_CPS2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone19.17
7LZ_HOUSTON2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone21.75
8LZ_LCRA2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone17.76
9LZ_NORTH2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone27.43
10LZ_RAYBN2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone126.80
11LZ_SOUTH2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone19.65
12LZ_WEST2022-12-22 14:30:00-06:00REAL_TIME_15_MINZone-1.84
\n", "
" ], "text/plain": [ " Location Time Market Location Type \\\n", "0 DC_E 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "1 DC_L 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "2 DC_N 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "3 DC_R 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "4 DC_S 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "5 LZ_AEN 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "6 LZ_CPS 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "7 LZ_HOUSTON 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "8 LZ_LCRA 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "9 LZ_NORTH 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "10 LZ_RAYBN 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "11 LZ_SOUTH 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "12 LZ_WEST 2022-12-22 14:30:00-06:00 REAL_TIME_15_MIN Zone \n", "\n", " SPP \n", "0 22.84 \n", "1 22.50 \n", "2 0.24 \n", "3 20.80 \n", "4 5.67 \n", "5 19.61 \n", "6 19.17 \n", "7 21.75 \n", "8 17.76 \n", "9 27.43 \n", "10 126.80 \n", "11 19.65 \n", "12 -1.84 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = iso.get_spp(date=\"latest\", market=\"REAL_TIME_15_MIN\", location_type=\"zone\")\n", "df" ] }, { "cell_type": "markdown", "id": "0676557f", "metadata": {}, "source": [ "## Example: Fetch day-ahead market (DAM) for today by hub" ] }, { "cell_type": "code", "execution_count": 6, "id": "656a27d9", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LocationTimeMarketLocation TypeSPP
0HB_HOUSTON2022-12-22 00:00:00-06:00DAY_AHEAD_HOURLYHub33.75
1HB_NORTH2022-12-22 00:00:00-06:00DAY_AHEAD_HOURLYHub33.84
2HB_PAN2022-12-22 00:00:00-06:00DAY_AHEAD_HOURLYHub33.29
3HB_SOUTH2022-12-22 00:00:00-06:00DAY_AHEAD_HOURLYHub34.20
4HB_WEST2022-12-22 00:00:00-06:00DAY_AHEAD_HOURLYHub38.58
..................
115HB_HOUSTON2022-12-22 23:00:00-06:00DAY_AHEAD_HOURLYHub80.16
116HB_NORTH2022-12-22 23:00:00-06:00DAY_AHEAD_HOURLYHub86.00
117HB_PAN2022-12-22 23:00:00-06:00DAY_AHEAD_HOURLYHub88.95
118HB_SOUTH2022-12-22 23:00:00-06:00DAY_AHEAD_HOURLYHub69.32
119HB_WEST2022-12-22 23:00:00-06:00DAY_AHEAD_HOURLYHub90.94
\n", "

120 rows × 5 columns

\n", "
" ], "text/plain": [ " Location Time Market Location Type \\\n", "0 HB_HOUSTON 2022-12-22 00:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "1 HB_NORTH 2022-12-22 00:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "2 HB_PAN 2022-12-22 00:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "3 HB_SOUTH 2022-12-22 00:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "4 HB_WEST 2022-12-22 00:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", ".. ... ... ... ... \n", "115 HB_HOUSTON 2022-12-22 23:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "116 HB_NORTH 2022-12-22 23:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "117 HB_PAN 2022-12-22 23:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "118 HB_SOUTH 2022-12-22 23:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "119 HB_WEST 2022-12-22 23:00:00-06:00 DAY_AHEAD_HOURLY Hub \n", "\n", " SPP \n", "0 33.75 \n", "1 33.84 \n", "2 33.29 \n", "3 34.20 \n", "4 38.58 \n", ".. ... \n", "115 80.16 \n", "116 86.00 \n", "117 88.95 \n", "118 69.32 \n", "119 90.94 \n", "\n", "[120 rows x 5 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = iso.get_spp(date=\"today\", market=\"DAY_AHEAD_HOURLY\", location_type=\"hub\")\n", "df" ] }, { "cell_type": "markdown", "id": "75289830", "metadata": {}, "source": [ "## Example: Fetch DAM for 2 days ago by node" ] }, { "cell_type": "code", "execution_count": 7, "id": "9abf06e9", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LocationTimeMarketLocation TypeSPP
0AEEC2022-12-20 23:30:00-06:00REAL_TIME_15_MINNode50.30
1AGUAYO_UNIT12022-12-20 23:30:00-06:00REAL_TIME_15_MINNode50.30
2AJAXWIND_RN2022-12-20 23:30:00-06:00REAL_TIME_15_MINNode50.30
3ALGOD_ALL_RN2022-12-20 23:30:00-06:00REAL_TIME_15_MINNode50.30
4ALVIN_RN2022-12-20 23:30:00-06:00REAL_TIME_15_MINNode50.30
..................
76090WOV_BESS_RN2022-12-20 00:00:00-06:00REAL_TIME_15_MINNode32.94
76091WRSBES_BESS12022-12-20 00:00:00-06:00REAL_TIME_15_MINNode32.94
76092W_PECO_UNIT12022-12-20 00:00:00-06:00REAL_TIME_15_MINNode32.94
76093X443ESRN2022-12-20 00:00:00-06:00REAL_TIME_15_MINNode32.94
76094YNG_WND_ALL2022-12-20 00:00:00-06:00REAL_TIME_15_MINNode32.94
\n", "

76095 rows × 5 columns

\n", "
" ], "text/plain": [ " Location Time Market Location Type \\\n", "0 AEEC 2022-12-20 23:30:00-06:00 REAL_TIME_15_MIN Node \n", "1 AGUAYO_UNIT1 2022-12-20 23:30:00-06:00 REAL_TIME_15_MIN Node \n", "2 AJAXWIND_RN 2022-12-20 23:30:00-06:00 REAL_TIME_15_MIN Node \n", "3 ALGOD_ALL_RN 2022-12-20 23:30:00-06:00 REAL_TIME_15_MIN Node \n", "4 ALVIN_RN 2022-12-20 23:30:00-06:00 REAL_TIME_15_MIN Node \n", "... ... ... ... ... \n", "76090 WOV_BESS_RN 2022-12-20 00:00:00-06:00 REAL_TIME_15_MIN Node \n", "76091 WRSBES_BESS1 2022-12-20 00:00:00-06:00 REAL_TIME_15_MIN Node \n", "76092 W_PECO_UNIT1 2022-12-20 00:00:00-06:00 REAL_TIME_15_MIN Node \n", "76093 X443ESRN 2022-12-20 00:00:00-06:00 REAL_TIME_15_MIN Node \n", "76094 YNG_WND_ALL 2022-12-20 00:00:00-06:00 REAL_TIME_15_MIN Node \n", "\n", " SPP \n", "0 50.30 \n", "1 50.30 \n", "2 50.30 \n", "3 50.30 \n", "4 50.30 \n", "... ... \n", "76090 32.94 \n", "76091 32.94 \n", "76092 32.94 \n", "76093 32.94 \n", "76094 32.94 \n", "\n", "[76095 rows x 5 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "date = pd.Timestamp.now() - pd.Timedelta(days=2)\n", "df = iso.get_spp(date=date, market=\"REAL_TIME_15_MIN\", location_type=\"node\")\n", "df" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.8" }, "vscode": { "interpreter": { "hash": "49f14642123d0cc1afa9fa45716ed5f1e915189c28b01efe02a8b7ec3c0a3fce" } } }, "nbformat": 4, "nbformat_minor": 5 }